package edu.ucue.ECU.dao;

import edu.ucue.ECU.exp.ActualizarDatosOperadorException;
import edu.ucue.ECU.exp.BuscarDatosCoordinadorException;
import edu.ucue.ECU.exp.BuscarDatosOperadorException;
import edu.ucue.ECU.exp.EliminarDatosOperadorException;
import edu.ucue.ECU.exp.GuardarDatosCoordinadorException;
import edu.ucue.ECU.exp.GuardarDatosOperadorException;
import edu.ucue.ECU.ngc.Coordinador;
import edu.ucue.ECU.ngc.Operador;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class CoordinadorDB {

    public void grabar(Coordinador miOperador) throws GuardarDatosCoordinadorException  {
        try {
            Conexion data=Conexion.getInstance();
            Connection var=data.getConexion();
            Statement stmt = var.createStatement();
            stmt.execute("insert into \"Coordinador\" values('" + miOperador.getCedula()+ "','" + miOperador.getNombre()+ "','" + miOperador.getContrasena()+ "')");
            var.close();
        } catch (SQLException ex) {
            throw new GuardarDatosCoordinadorException("Se produjo un error inesperado al guardar los datos de Coordinador");
        }
    }
    
    
    public void modificar(Coordinador miOperador) throws ActualizarDatosOperadorException  {
        try {
            Conexion data=Conexion.getInstance();
            Connection var=data.getConexion();
            Statement stmt = var.createStatement();
            String consulta="update \"Coordinador\" set nombre='" + miOperador.getNombre() + "',contrasena='"+miOperador.getContrasena()+"' where \"CI\"='" + miOperador.getCedula() + "'";
            stmt.executeUpdate(consulta);
            var.close();
        } catch (SQLException ex) {
            throw new ActualizarDatosOperadorException("Se produjo un error inesperado al actualizar los datos de Coordinador");
        }
    }
    
    public void eliminar(Coordinador miOperador) throws EliminarDatosOperadorException {
        try {
            Conexion data=Conexion.getInstance();
            Connection var=data.getConexion();
            Statement stmt = var.createStatement();
            String consulta="delete \"Coordinador\" where \"CI\"='" + miOperador.getCedula() + "'";
            stmt.executeUpdate(consulta);
            var.close();
        } catch (SQLException ex) {
            throw new EliminarDatosOperadorException("Se produjo un error inesperado al eliminar los datos de Coordinador");
        }
    }
    public Coordinador buscar(Coordinador miOperador) throws BuscarDatosCoordinadorException  {
        try {
            Conexion data=Conexion.getInstance();
            Connection var=data.getConexion();
            Statement stmt = var.createStatement();
            String consulta="select * from \"Coordinador\" where \"CI\" ='" + miOperador.getCedula() + "'";
            System.out.println(consulta);
            ResultSet resultado = stmt.executeQuery(consulta);
            if (resultado.next()) {
                miOperador.setNombre(resultado.getString("nombre"));
                miOperador.setContrasena(resultado.getString("contrasena"));
                var.close();
                return miOperador;
            }
            var.close();
            return null;
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            throw new BuscarDatosCoordinadorException("Se produjo un error inesperado al buscar los datos de Coordinador");
        }
    }
    
    public void buscarNombre(Coordinador miOperador) throws BuscarDatosCoordinadorException  {
        try {
            Conexion data=Conexion.getInstance();
            Connection var=data.getConexion();
            Statement stmt = var.createStatement();
            String consulta="select * from \"Coordinador\" where nombre ='" + miOperador.getNombre() + "'";
            ResultSet resultado = stmt.executeQuery(consulta);
            if (resultado!=null) {
                resultado.next();
                miOperador.setCedula(resultado.getString("CI"));
            }
            var.close();
        } catch (SQLException ex) {
            throw new BuscarDatosCoordinadorException("Se produjo un error inesperado al buscar los datos de Coordinador");
        }
    }
    
      public ArrayList listar() throws BuscarDatosCoordinadorException {
        try {
            ArrayList todos=new ArrayList();
            Conexion data=Conexion.getInstance();
            Connection var=data.getConexion();
            Statement stmt = var.createStatement();
            ResultSet resultado = stmt.executeQuery("select * from \"Coordinador\"");
            while (resultado.next()) {
                Coordinador miOperador = new Coordinador();
                miOperador.setCedula(resultado.getString("CI"));
                miOperador.setNombre(resultado.getString("nombre"));
                miOperador.setContrasena(resultado.getString("contrasena"));
                todos.add(miOperador);
            }var.close();
            return todos;
        } catch (SQLException ex) {
            throw new BuscarDatosCoordinadorException("Se produjo un error inesperado al buscar los datos de operador");
        }
    }

}
